/*
 * Utilities.h
 *
 *  Created on: 05-05-2013
 *      Author: Skeith
 */

#ifndef UTILITIES_H_
#define UTILITIES_H_

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>

void extractFace(cv::Mat& image, cv::Mat& output);

void drawRects(cv::Mat img, std::vector<cv::Rect> rects, cv::Scalar color);
void createSingleHistogramImage(cv::Mat& histogram, cv::Mat& output, int histSize, int histW = 512, int histH = 400);
void createProjectionHistogram(cv::Mat& projection, cv::Mat& output, int outSize, int type);
void createProjections(const cv::Mat& input, cv::Mat& hProjection, cv::Mat& vProjection);

int faceSize(const cv::Mat& faceImage, int& leftLine, int& rightLine);
void createHistogram(cv::Mat input, cv::Mat& output);

cv::Rect findNose(const cv::Mat& input);

int findEyesLine(const cv::Mat& input);
void findEyes(const cv::Mat& input, int eyeLine, cv::Mat& outRightEye, cv::Mat& outLeftEye, cv::Rect& rectRightEye, cv::Rect& rectLeftEye);
void findEyeCenter(const cv::Mat& input, cv::Point& center, int& radius);

cv::Rect findMouth (const cv::Mat& input);
#endif /* UTILITIES_H_ */
